package com.example.spindrift.dao;

import com.example.spindrift.models.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.context.annotation.Primary;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Mapper
public interface SysUserMapper {
    /**
     * 获取所有用户信息
     * @return
     */
    List<SysUser> getAllUser();

    /**
     * 根据用户id获取一条用户信息
     * @param user_id 用户ID
     * @return
     */
    SysUser getUserById(Integer user_id);

    /**
     * 根据账号密码查询用户信息（登录）
     * @param account 账号
     * @param pwd 密码
     * @return
     */
    SysUser getUserByLogin(@Param("account") String account,@Param("pwd") String pwd);

    /**
     * 根据用户名、账号搜索用户信息
     * @param keyword 关键字
     * @return
     */
    List<SysUser> searchUser(String keyword);

    /**
     * 根据一个或多个角色ID查询用户信息
     * @param roles 角色ID
     * @return
     */
    List<SysUser> getUserByRoleId(String roles);

    /**
     * 添加一条用户信息
     * @param user 用户信息
     * @return
     */
    Integer insertUser(SysUser user);

    /**
     * 根据用户ID删除一条用户信息
     * @param user_id 用户ID
     * @return 受影响行数
     */
    Integer deleteUser(Integer user_id);

    /**
     * 编辑一条用户信息
     * @param user 新的用户信息
     * @return 受影响行数
     */
    Integer updateUser(SysUser user);

    /**
     * 禁用用户
     * @param user_id 用户ID
     * @return 受影响行数
     */
    Integer forbiddenUser(Integer user_id);

    /**
     * 启用用户
     * @param user_id 用户ID
     * @return 受影响行数
     */
    Integer startUser(Integer user_id);

    /**
     * 更新用户的角色关联
     * @param user_id 用户ID
     * @param roles 角色id集合 1,2,3 这种形式
     * @return 影响行数
     */
    Integer updateUserRole(@Param("userId") String user_id,@Param("roles") String roles);
    /**
     *删除一条或多条角色关联
     * @param user_id 用户ID
     * @param roles 角色id集合 1,2,3 这种形式
     * @return 影响行数
     */
    Integer deleteUserRole(@Param("userId") String user_id,@Param("roles") String roles);
    /**
     *添加一条或多条角色关联
     * @param user_id 用户ID
     * @param roles 角色id集合 1,2,3 这种形式
     * @return 影响行数
     */
    Integer addUserRole(@Param("userId") String user_id,@Param("roles") String roles);
}
